package dao;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;







import modelo.Detallemenu;
import modelo.DetallemenuId;
import modelo.Servicioadicionalxsalon;
import modelo.Servicioadicional;
import modelo.Salon;





import modelo.ServicioadicionalxsalonId;

import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import util.HibernateUtil;

public class ServicioAdicionalXSalonDao implements Serializable{

        private static final long serialVersionUID = -9175754992555232126L;

        private Session session;
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        
        public ServicioAdicionalXSalonDao() {
                super();
        }
        
        
        public List<Servicioadicionalxsalon> obtenerServicioAdicionalXSalon() {
        
        session=sessionFactory.openSession();
        Criteria crit = session.createCriteria(Servicioadicionalxsalon.class);

        List<Servicioadicionalxsalon> sa= crit.list();
        
        session.close();
        return sa;
}

        public List<Servicioadicionalxsalon> obtenerServicioAdicionalXSalon(int idSalon) {
                session=sessionFactory.openSession();

//                      Query query = session.createQuery("SELECT s FROM Servicioadicionalxsalon s");
                Criteria cr = session.createCriteria(Servicioadicionalxsalon.class);
                cr.add(Restrictions.eq("salon.idSalon", idSalon));
                List<Servicioadicionalxsalon> ca= cr.list();
                session.close();

                return ca;
        }
        
        public List<Servicioadicionalxsalon> obtenerServicioAdicionalFitrados(
                        Integer idServicio) {

                session = sessionFactory.openSession();
                Criteria crit = session.createCriteria(Servicioadicionalxsalon.class)
                                .add(Restrictions.eq("servicioadicional.idServicio", idServicio));

                List<Servicioadicionalxsalon> sa = crit.list();

                session.close();
                return sa;
        }
        
        public void guardarServicioAdicionalXSalon(List<Servicioadicionalxsalon> lista) {
    		
        	ServicioadicionalxsalonId  id = new ServicioadicionalxsalonId();
    		
    		Transaction transaction = null;

    		try{
    			
    		session = sessionFactory.openSession();
            transaction=session.beginTransaction();			
            
  		
    		//Registra la lista de detalles de menu
            for(Servicioadicionalxsalon i: lista){
            	
            	id.setIdSalon(i.getSalon().getIdSalon());
            	id.setIdServicioAdicional(i.getServicioadicional().getIdServicio());
            	
            	i.setId(id);
            	
            	
                session.save(i);
                id = new ServicioadicionalxsalonId();
            }
    		
    		transaction.commit();
    	
    		                
            } catch (Exception e1) {
                //Error
                if (transaction != null) {
                    transaction.rollback();
                    throw e1;
                  }
            } finally { 
                session.close();
            }

        }




}
